home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1980-01-01 | 6.3 KB | 230 lines |
- 10 DEF FNA(X)=COS(360/N*X*Q)*R+SIRD:DEF FNB(X)=SIN(360/N*X*Q)*R+SORD:Q=0.017453:Z$=" ":E$="BRGEWMCE":P=1:C=1:SCREEN 1,0:KEY OFF:CLS:E=0:D=0:LOCATE 25,1:PRINT "C";:FER$="123456789":FREG$="CPMLDBNFSRQHTUXY*AZE"
- 20 EQ$="ABCDEFGHIJKLMNOPQRSTUVWXYZ,!.? |-0123456789":DIM ALPHEBET(43,15):FOR A=1 TO 43:FOR B=1 TO 15:READ ALPHEBET(A,B):NEXT:NEXT
- 30 COLOR 0,P
- 40 I$=INKEY$
- 50 IF I$="" THEN 40
- 60 IF INSTR(FER$,I$)<>0 THEN ON VAL(I$) GOTO 1260,1140,1300,1060,40,1100,1180,1020,1220
- 70 IF I$=CHR$(27) THEN GOSUB 1570:GOTO 40
- 80 KNK=INSTR(FREG$,I$):IF KNK=0 THEN 40
- 90 ON KNK GOTO 100,120,130,150,160,170,180,220,330,430,190,520,710,840,940,980,200,1750,2200,2260
- 100 C=C+1:IF C=4 THEN C=0
- 110 COLOR 0,0:LOCATE 25,1:PRINT MID$(E$,(P+1)*4-C,1);:COLOR 0,P:GOTO 40
- 120 P=ABS(P=0):GOTO 110
- 130 IF LIN=0 THEN PSET(E,D),1:LIN=1:SIRD=E:SORD=D:GOTO 40
- 140 IF LIN=1 THEN PSET(E,D),1:LIN=2:SARD=E:SERD=D:GOTO 40 ELSE GOTO 40
- 150 IF LIN=2 THEN LINE(SIRD,SORD)-(SARD,SERD),C:LIN=0:GOTO 40 ELSE GOTO 40
- 160 IF LIN=2 THEN CIRCLE(SIRD,SORD),INT(SQR((SIRD-SARD)^2+(SORD-SERD)^2)),C:LIN=0:PSET(SIRD,SORD),0:GOTO 40 ELSE GOTO 40
- 170 IF LIN=2 THEN LINE(SIRD,SORD)-(SARD,SERD),C,B:LIN=0:GOTO 40 ELSE GOTO 40
- 180 CLS:E=0:D=0:GOTO 40
- 190 CLS:SCREEN 0:WIDTH 80:END
- 200 GOSUB 1340:GOTO 40
- 210 IF I$=CHR$(27) THEN GOSUB 1570:GOTO 40 ELSE GOTO 40
- 220 I$=INKEY$
- 230 IF I$="" THEN 220
- 240 IF P=0 THEN 280
- 250 IF I$="C" THEN SD=1:GOTO 310
- 260 IF I$="M" THEN SD=2:GOTO 310
- 270 IF I$="W" THEN SD=3:GOTO 310 ELSE 40
- 280 IF I$="G" THEN SD=1:GOTO 310
- 290 IF I$="R" THEN SD=2:GOTO 310
- 300 IF I$="B" THEN SD=3:GOTO 310 ELSE 40
- 310 PAINT(E,D),SD,C
- 320 GOTO 40
- 330 I$=INKEY$:IF I$="" THEN 330 ELSE IF VAL(I$)<1 OR VAL(I$)>9 THEN BEEP:GOTO 40
- 340 FG$="B:DATA"+I$
- 350 CLOSE:OPEN FG$ FOR OUTPUT AS #1
- 360 FOR SD=0 TO 319:FOR SF=0 TO 199
- 370 SG=POINT(SD,SF)
- 380 IF SG=0 THEN 420
- 390 PRINT #1,SD
- 400 PRINT #1,SF
- 410 PRINT #1,SG
- 420 NEXT:NEXT:BEEP:GOTO 40
- 430 I$=INKEY$:IF I$="" THEN 430 ELSE IF VAL(I$)<1 OR VAL(I$)>9 THEN BEEP:GOTO 40
- 440 FG$="B:DATA"+I$
- 450 CLOSE:OPEN FG$ FOR INPUT AS #1:CLS
- 460 IF EOF(1) THEN 40
- 470 INPUT #1,SG
- 480 INPUT #1,SF
- 490 INPUT #1,SD
- 500 PSET(SG,SF),SD
- 510 GOTO 460
- 520 LPRINT "C=CHANGE COLOR"
- 530 LPRINT "P=CHANGE PALATTE"
- 540 LPRINT "M=MARK POINT(DO TWICE)"
- 550 LPRINT "L=DRAW LINE"
- 560 LPRINT "D=DRAW CIRCLE"
- 570 LPRINT "B=DRAW BOX"
- 580 LPRINT "N=NEW SCREEN"
- 590 LPRINT "F,C=FILL AREA,C=R,G,W,B,M,C"
- 600 LPRINT "S=STORE SCREEN"
- 610 LPRINT "R=READ SCREEN"
- 620 LPRINT "Q=QUIT"
- 630 LPRINT "H=HELP"
- 640 LPRINT "T,N=DRAW STAR,N=3-9(ODD)"
- 650 LPRINT "U,N=DRAW POLYGON,N=3-9"
- 660 LPRINT "X,N=CHANGE X COORDINATES"
- 670 LPRINT "Y,N=CHANGE Y COORDINATES"
- 680 LPRINT "*=PRINTER SCREEN DUMP TO FILE"
- 690 LPRINT "Esc=PRINTER SCREEN FILE DUMP TO PRINTER"
- 691 LPRINT "Z=SHIFT PICTURE DOWN"
- 692 LPRINT "E=CLEAR MARK POINTERS"
- 693 LPRINT "A=PRINT CHARACTER"
- 700 GOTO 40
- 710 IF LIN<2 THEN 40
- 720 N=0
- 730 I$=INKEY$
- 740 IF I$="" THEN 730
- 750 IF I$=CHR$(13) THEN 780
- 760 N=N*10+VAL(I$)
- 770 GOTO 730
- 780 IF N/2=INT(N/2) THEN BEEP:GOTO 40
- 790 IF N<1 OR INT(N/2)=N/2 THEN 40
- 800 R=SQR((SERD-SORD)^2+(SARD-SIRD)^2)
- 810 K=(N+1)/2
- 820 FOR O=1 TO N:LINE(FNA(O),FNB(O))-(FNA(K),FNB(K)),C:IF O=(N+1)/2 THEN LIN=0:GOTO 40
- 830 LINE(FNA(O),FNB(O))-(FNA(K+1),FNB(K+1)),C:K=K+1:K=K*ABS(K<=N)+ABS(K>N):NEXT
- 840 IF LIN<2 THEN 40
- 850 N=0
- 860 I$=INKEY$
- 870 IF I$="" THEN 860
- 880 IF I$=CHR$(13) THEN 910
- 890 N=N*10+VAL(I$)
- 900 GOTO 860
- 910 IF N<2 THEN 40
- 920 R=SQR((SERD-SORD)^2+(SARD-SIRD)^2)
- 930 FOR O=1 TO N:LINE(FNA(O),FNB(O))-(FNA(O+1),FNB(O+1)),C:NEXT:LIN=0:GOTO 40
- 940 SD=0
- 950 I$=INKEY$:IF I$="" THEN 950
- 960 IF I$=CHR$(13) THEN E=SD:GOTO 40
- 970 SD=SD*10+VAL(I$):IF SD>319 THEN BEEP:GOTO 40 ELSE 950
- 980 SD=0
- 990 I$=INKEY$:IF I$="" THEN 990
- 1000 IF I$=CHR$(13) THEN D=SD:GOTO 40
- 1010 SD=SD*10+VAL(I$):IF SD>199 THEN BEEP:GOTO 40 ELSE 990
- 1020 IF D-1<0 THEN BEEP:GOTO 40 ELSE D=D-1
- 1030 IF C=0 THEN PSET(E,D),1:FOR SD=1 TO 25:NEXT
- 1040 PSET(E,D),C
- 1050 GOTO 40
- 1060 IF E-1<0 THEN BEEP:GOTO 40 ELSE E=E-1
- 1070 IF C=0 THEN PSET(E,D),1:FOR SD=1 TO 25:NEXT
- 1080 PSET(E,D),C
- 1090 GOTO 40
- 1100 IF E+1>319 THEN BEEP:GOTO 40 ELSE E=E+1
- 1110 IF C=0 THEN PSET(E,D),1:FOR SD=1 TO 25:NEXT
- 1120 PSET(E,D),C
- 1130 GOTO 40
- 1140 IF D+1>199 THEN BEEP:GOTO 40 ELSE D=D+1
- 1150 IF C=0 THEN PSET(E,D),1:FOR SD=1 TO 25:NEXT
- 1160 PSET(E,D),C
- 1170 GOTO 40
- 1180 IF D-1<0 OR E-1<0 THEN BEEP:GOTO 40 ELSE D=D-1:E=E-1
- 1190 IF C=0 THEN PSET(E,D),1:FOR SD=1 TO 25:NEXT
- 1200 PSET(E,D),C
- 1210 GOTO 40
- 1220 IF D-1<0 OR E+1>319 THEN BEEP:GOTO 40 ELSE D=D-1:E=E+1
- 1230 IF C=0 THEN PSET(E,D),1:FOR SD=1 TO 25:NEXT
- 1240 PSET(E,D),C
- 1250 GOTO 40
- 1260 IF D+1>199 OR E-1<0 THEN BEEP:GOTO 40 ELSE D=D+1:E=E-1
- 1270 IF C=0 THEN PSET(E,D),1:FOR SD=1 TO 25:NEXT
- 1280 PSET(E,D),C
- 1290 GOTO 40
- 1300 IF D+1>199 OR E+1>319 THEN BEEP:GOTO 40 ELSE D=D+1:E=E+1
- 1310 IF C=0 THEN PSET(E,D),1:FOR SD=1 TO 25:NEXT
- 1320 PSET(E,D),C
- 1330 GOTO 40
- 1340 FERT$="FILE":FOR DFD=1 TO 4
- 1350 I$=INKEY$:IF I$="" THEN 1350
- 1360 IF I$=CHR$(13) THEN 1380
- 1370 FERT$=FERT$+I$:NEXT DFD
- 1380 CLOSE:OPEN FERT$ FOR OUTPUT AS #1
- 1390 FOR CCC=0 TO 196 STEP 7
- 1400 FOR AAA=0 TO 319
- 1410 AAX=-1
- 1420 AAZ=0
- 1430 FOR BBB=CCC TO CCC+6
- 1440 IF BBB>199 THEN AAV=0:GOTO 1480
- 1450 AAV=POINT(AAA,BBB)
- 1460 IF AAV>1 THEN AAV=1
- 1470 IF AAV<0 THEN BEEP:RETURN
- 1480 AAX=AAX+1
- 1490 AAZ=AAZ+AAV*2^AAX
- 1500 NEXT BBB
- 1510 IF AAZ=13 THEN AAZ=12
- 1520 PRINT #1,AAZ
- 1530 NEXT AAA
- 1540 NEXT CCC
- 1550 CLOSE
- 1560 RETURN
- 1570 FERT$="FILE":FOR DFD=1 TO 4
- 1580 I$=INKEY$:IF I$="" THEN 1580
- 1590 IF I$=CHR$(13) THEN 1610
- 1600 FERT$=FERT$+I$:NEXT DFD
- 1610 CLOSE:OPEN FERT$ FOR INPUT AS #1
- 1620 WIDTH "LPT1:",255
- 1630 LPRINT CHR$(28);
- 1640 LPRINT CHR$(3);
- 1650 FOR CCC=0 TO 196 STEP 7
- 1660 FOR DDD=1 TO 128:LPRINT CHR$(0);:NEXT
- 1670 FOR AAA=0 TO 319
- 1680 INPUT #1,AAZ
- 1690 IF AAZ=3 THEN LPRINT CHR$(3);CHR$(3); ELSE LPRINT CHR$(AAZ);
- 1700 NEXT
- 1710 LPRINT CHR$(3);CHR$(14);
- 1720 NEXT
- 1730 LPRINT CHR$(3);CHR$(2);
- 1740 CLOSE:RETURN
- 1750 I$=INKEY$:IF I$="" THEN 1750 ELSE I=INSTR(EQ$,I$):IF I=0 THEN 40
- 1760 FOR J=1 TO 5:FOR K=1 TO 3:PSET(E+K,D+J),C*(ALPHEBET(I,(J-1)*3+K)):NEXT:NEXT:IF E+4>319 THEN GOTO 40 ELSE E=E+4:GOTO 40
- 1770 DATA 1,1,1,1,0,1,1,1,1,1,0,1,1,0,1
- 1780 DATA 1,1,1,1,0,1,1,1,0,1,0,1,1,1,1
- 1790 DATA 1,1,1,1,0,0,1,0,0,1,0,0,1,1,1
- 1800 DATA 1,1,0,1,0,1,1,0,1,1,0,1,1,1,0
- 1810 DATA 1,1,1,1,0,0,1,1,0,1,0,0,1,1,1
- 1820 DATA 1,1,1,1,0,0,1,1,0,1,0,0,1,0,0
- 1830 DATA 1,1,1,1,0,0,1,0,1,1,0,1,1,1,1
- 1840 DATA 1,0,1,1,0,1,1,1,1,1,0,1,1,0,1
- 1850 DATA 1,1,1,0,1,0,0,1,0,0,1,0,1,1,1
- 1860 DATA 0,0,1,0,0,1,0,0,1,1,0,1,1,1,1
- 1870 DATA 1,0,1,1,0,1,1,1,0,1,0,1,1,0,1
- 1880 DATA 1,0,0,1,0,0,1,0,0,1,0,0,1,1,1
- 1890 DATA 1,0,1,1,1,1,1,0,1,1,0,1,1,0,1
- 1900 DATA 1,0,1,1,1,1,1,1,1,1,1,1,1,0,1
- 1910 DATA 1,1,1,1,0,1,1,0,1,1,0,1,1,1,1
- 1920 DATA 1,1,1,1,0,1,1,1,1,1,0,0,1,0,0
- 1930 DATA 1,1,1,1,0,1,1,0,1,1,1,1,0,0,1
- 1940 DATA 1,1,1,1,0,1,1,1,0,1,0,1,1,0,1
- 1950 DATA 1,1,1,1,0,0,1,1,1,0,0,1,1,1,1
- 1960 DATA 1,1,1,0,1,0,0,1,0,0,1,0,0,1,0
- 1970 DATA 1,0,1,1,0,1,1,0,1,1,0,1,1,1,1
- 1980 DATA 1,0,1,1,0,1,1,0,1,1,0,1,0,1,0
- 1990 DATA 1,0,1,1,0,1,1,0,1,1,1,1,1,0,1
- 2000 DATA 1,0,1,0,1,0,0,1,0,0,1,0,1,0,1
- 2010 DATA 1,0,1,0,1,0,0,1,0,0,1,0,0,1,0
- 2020 DATA 1,1,1,0,0,1,0,1,0,1,0,0,1,1,1
- 2030 DATA 0,0,0,0,0,0,0,1,0,0,1,0,1,0,0
- 2040 DATA 0,1,0,0,1,0,0,1,0,0,0,0,0,1,0
- 2050 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0
- 2060 DATA 1,1,1,0,0,1,0,1,0,0,0,0,0,1,0
- 2070 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- 2080 DATA 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0
- 2090 DATA 0,0,0,0,0,0,1,1,1,0,0,0,0,0,0
- 2100 DATA 1,1,1,1,0,1,1,0,1,1,0,1,1,1,1
- 2110 DATA 0,1,0,1,1,0,0,1,0,0,1,0,1,1,1
- 2120 DATA 0,1,0,1,0,1,0,0,1,0,1,0,1,1,1
- 2130 DATA 1,1,1,0,0,1,0,1,1,0,0,1,1,1,1
- 2140 DATA 1,0,1,1,0,1,1,1,1,0,0,1,0,0,1
- 2150 DATA 1,1,1,1,0,0,1,1,1,0,0,1,1,1,1
- 2160 DATA 1,0,0,1,0,0,1,1,1,1,0,1,1,1,1
- 2170 DATA 1,1,1,0,0,1,0,0,1,0,0,1,0,0,1
- 2180 DATA 1,1,1,1,0,1,1,1,1,1,0,1,1,1,1
- 2190 DATA 1,1,1,1,0,1,1,1,1,0,0,1,0,0,1
- 2200 IF LIN<>2 THEN 40
- 2210 FOR JN=SERD TO SORD STEP -1
- 2220 FOR JM=SIRD TO SARD
- 2230 VRF=POINT(JM,JN)
- 2240 PSET(JM,JN+1),VRF
- 2250 NEXT:NEXT:SERD=SERD+1:GOTO 40
- 2260 LIN=0:GOTO 40
-